1. The Field of the Invention
This invention relates to systems, methods, and computer program products for sending correlated messages from one application to another over a network in a secure and resource-efficient manner.
2. Background and Relevant Art
As computerized systems have increased in popularity, so also have the needs to interconnect computer systems in small networks, such as local area networks, as well as large or global networks such as the Internet. In general, computer systems and related devices are connected to a given network for a variety of reasons, whether, for example, to simply exchange personal electronic messages, or to sell merchandise, provide account information, to share files, and so forth. One will appreciate, however, that as computer systems have become increasingly more sophisticated for individual use, the challenges associated with interconnecting computer systems on a network have also increased.
In general, a computing system communicates a message to another computing system on a network by constructing the message with an application program, and then packaging the message in one or more ways so that the message can reach its destination appropriately. In particular, one or more components or modules at the sending computer system might add address or routing information to the message, while another component or module might encrypt the message so that it cannot be read in transit. The receiving computer system then takes the message, unpacks the data as appropriate, and processes the data. Thus, passing data between one or more applications at sending and receiving computers typically involves a number of applications, modules, components, protocols, and processing resources at multiple, different computer systems.
Unfortunately, there are a number of difficulties associated with some present queued message communication mechanisms. When receiving correlated messages from another computer, a receiving computer typically has to “peek” through (or query) each of the messages received to gain some context as to how, whether, or with what application the individual message is to be processed. The recipient computer also typically may have to do this “peek” or “query” function to determine whether messages are correlated in a group, such that they should be processed together. To peek or query messages in this manner, a module at the receiving computer system may need to deserialize the message, and then read several layers of headers in the message before realizing that the message needs to be processed by one application, and not another, or with another related message at the application, but not with an unrelated message, and so on. In some cases, this may require the receiving computer system to read several layers of headers in the message before realizing that the message needs to be processed by an entirely different computer system.
As such, the conventional systems for receiving, forwarding, and processing messages can pose a number of problems, particularly with related messages that are to be processed in a specific order or grouping. For example, one conventional method for processing messages in a group is to process messages in the order that they are received. Unfortunately, there is little guarantee that messages will each arrive at the receiving computer in the appropriate order in the group, or even in specific groupings. For example, any number of relay or processing mechanisms along the transit path of a message can delay one message compared with the next, causing messages to arrive out of order. This can be exacerbated when unrelated messages are received in an intermingled fashion with groups of related messages. Thus, a recipient computer system may need to read a significant amount of the message to get an appropriate context for how the message should be processed.
Besides potentially posing a problem from a resource processing standpoint, asking the recipient computer system to read (or “peek”, or “query”) an amount of the message before forwarding the message to an appropriate application can create other problems related to security. For example, if the processing context of a message cannot be ascertained until the message is unpacked, deserialized, or decrypted, sensitive information in the message may be vulnerable to interception by inappropriate applications or processes.
Accordingly, an advantage in the art can be realized with systems, methods, and computer program products that allow messages to be sent from one application to another over a network in a correlated fashion, and in an intended processing order or grouping, when appropriate. Furthermore, an advantage in the art can be realized with such systems and methods that allow messages to be sent over a network without requiring unintended applications or computer systems to deserialize or decrypt portions of the message before the messages are received by the appropriate application.